1. Technical Field
The present invention relates generally to parallel processing environments, and more specifically to parallel processing systems employing a shared queue.
2. Background Art
It is commonplace in contemporary data processing environments to provide a plurality of systems to handle the processing needs of one or more clients. For example, two or more systems, such as transaction processing systems, may be interfaced to one or more clients via a communications network. In this environment, when a client has a task to be performed by one of the systems, that client sends an input message to the desired system to request processing by an application running in that system. The subject system queues the message and provides the message to the application for processing. When processing is complete, the application places an outgoing message in the queue for transmission over the network to the client.
To take advantage of the multi-processing aspect of this environment, the system originally tasked by the client, system A, may extract the input message from its queue and forward the input message to a second system, system B, for processing. When processing is completed by system B, the response (outgoing message) is forwarded to system A and placed on system A's queue for transmission to the client. Thus, in this manner, multiple systems can be utilized to handle processing requests from numerous clients.
There are, however, a few disadvantages with this arrangement. For example, if system A fails, none of the work on the queue of system A can be accessed. Therefore, the client is forced to wait until system A is brought back online to have its transaction processed.
In order to address these disadvantages, a shared, or common, queue may be provided to store incoming messages for processing by any of a plurality of data processing systems. A common queue server receives and queues the messages onto the shared queue so that they can be retrieved by a system having available capacity to process the messages. In operation, a system having available capacity retrieves a queued message, performs the necessary processing, and places an appropriate response message back on the shared queue. Thus, the shared queue stores messages sent in either direction between clients requesting processing and the data processing systems that perform the processing.
Because the messages are enqueued onto the shared queue, the messages can be processed by an application running in any of a plurality of systems having access to the shared queue. Thus, automatic workload management among the plurality of systems is provided. Also, because any of the systems connected to the shared queue can process messages, an advantage of processing redundancy is provided. If a particular application that is processing a message fails, another application can retrieve that message from the shared queue and perform the processing without the client having to wait for the original application to be brought back on-line. This provides processing redundancy to clients of the data processing environment.
When utilizing a common work queue, all clients that submit requests onto the common queue have an expectation that their work request will be completed within a reasonable amount of time. In an environment where not all servers are eligible to process all requests, it is possible at any given time that there are no servers eligible to process some or all of the work requests on the queue. When a work request is synchronous, it is important that the client that submitted the request be notified that there is no server eligible to process its synchronous request.
More specifically, in a shared work queue environment, there are one or more clients that submit requests and one or more servers that process those requests. Of those servers that process requests, not all servers may have the ability to process each request on the common work queue. This may be the result of (a) a server has been configured to only process certain types of requests or (b) a server does not have access to the resources required to process certain types of requests. As an example for case (a), some servers may be configured to only process requests from certain clients, while other servers may be configured to process all requests. As an example for case (b), some requests may require access to certain storage pools that not all servers have connectivity to. Only servers that have connectivity to the required storage pool can process those requests.